/*
适配器模式（Adapter Pattern）是一种结构型设计模式，它允许将一个类的接口转换成客户端所期望的另一个接口。
适配器模式主要用于解决两个不兼容接口之间的兼容性问题。

在适配器模式中，有以下几个角色：

● 目标接口（Target）：定义了客户端所期望的接口。
● 适配器（Adapter）：将源接口转换成目标接口的适配器。
● 源接口（Adaptee）：需要被适配的接口。
● 客户端（Client）：使用目标接口的客户端。

适配器模式通过适配器将源接口转换成目标接口，从而使得客户端可以通过目标接口来使用源接口。
适配器可以通过继承或组合的方式来实现。

下面是一个使用适配器模式的C语言例程，用于将一个旧的温度传感器接口适配成一个新的温度传感器接口：
*/

#include <stdio.h>

// 目标接口
typedef struct
{
    void (*getTemperature)();
} NewTemperatureSensor;

// 适配器
typedef struct
{
    NewTemperatureSensor newSensor;
    void (*getTemperature)();
} TemperatureSensorAdapter;

// 源接口的实现
void getTemp()
{
    printf("Old Temperature Sensor: 25°C\n");
}

// 源接口
typedef struct
{
    void (*getTemp)();
} OldTemperatureSensor;

// 适配器的适配方法
void getTemperature()
{
    OldTemperatureSensor oldSensor = {getTemp};
    // oldSensor.getTemp = getTemp;
    oldSensor.getTemp();
}

int main()
{
    // 创建适配器对象
    TemperatureSensorAdapter adapter;
    adapter.newSensor.getTemperature = getTemperature;

    // 使用适配器对象获取温度
    adapter.newSensor.getTemperature();

    return 0;
}

/*
在上面的例程中，定义了目标接口NewTemperatureSensor，其中声明了获取温度的接口方法。
然后，实现了适配器类TemperatureSensorAdapter，其中包含了目标接口对象和适配方法。
在适配方法中，创建了源接口对象并调用源接口的方法。
然后，通过适配器对象的目标接口方法来获取温度。
在main函数中，创建了适配器对象，并使用适配器对象获取温度。

通过使用适配器模式，我们可以将不兼容的接口转换成兼容的接口，从而解决接口不一致的问题。
适配器模式可以提高代码的复用性和灵活性，使得不兼容的接口可以一起工作。
*/